package com.roger.homecenterscreen.voice

/**
 * 语音功能配置类
 */
object VoiceConfig {
    // 讯飞语音配置
    const val APPID = "45989e36"
    const val API_SECRET = "NTY5NTE2OTQ4YTk2M2FlYmQ4OWMyODAy"
    const val API_KEY = "42e16945129717d2a7508f51cfc09ac4"
    
    // 语音唤醒配置
    const val WAKEUP_WORD = "小平安"
    const val WAKEUP_THRESHOLD = 0.3f
    
    // 语音识别配置
    const val ASR_LANGUAGE = "zh_cn"
    const val ASR_ACCENT = "mandarin"
    const val ASR_SAMPLE_RATE = 16000
    
    // 语音合成配置
    const val TTS_LANGUAGE = "zh_cn"
    const val TTS_VOICE_NAME = "xiaoyan"
    const val TTS_SPEED = 50
    const val TTS_VOLUME = 50
    const val TTS_PITCH = 50
    
    // Dify配置
    const val DIFY_BASE_URL = "http://dempdify.lzwcai.com/v1"
    const val DIFY_API_KEY = "app-1Dhl7M1AvN9LOCQ2isqJz6Uw"
    
    // VAD配置
    const val VAD_TIMEOUT = 3000 // 3秒无声音自动停止
    const val VAD_FRONT_TIMEOUT = 3000 // 前端点超时
    const val VAD_BACK_TIMEOUT = 1000 // 后端点超时

    // FunASR 配置
    const val FUNASR_WS_URL = "ws://192.168.31.85:10095"
    const val FUNASR_MODE = "2pass"
    // FunASR 分片大小：分别对应 1-pass、2-pass 和最终尾片的毫秒数（单位：毫秒）
    // 计算方式：基于 16 kHz、16-bit 单声道 PCM，每毫秒采样 16 帧，每帧 2 字节
    // 1-pass 实时流：5 ms → 16×5 = 80 采样 → 160 字节
    // 2-pass 合并：10 ms → 16×10 = 160 采样 → 320 字节
    // 尾片补齐：5 ms → 同上 160 字节
    const val FUNASR_CHUNK_SIZE = "5, 10, 5"
    const val FUNASR_CHUNK_INTERVAL = 10
    const val FUNASR_SEND_SIZE = 1920
    const val FUNASR_TRUST_ALL_SSL = true // 内网/自签名证书场景
    const val FUNASR_HOTWORDS = "何涵希 20\n何晨昊 20\n潘月平 20\n何双峰 50\n希希 50\n昊昊 60\n平儿 20\n阿峰 20\n"
    const val FUNASR_ALLOW_WS_FALLBACK = true // 若wss握手失败，自动回退ws

    // 本地简易VAD：音量门限（平均绝对幅度，0-32767），仅当超过该门限才发送音频片段
    const val FUNASR_VAD_ENABLE = true
    // FunASR本地VAD：平均绝对幅度门限，超过该值才认为有语音（0-32767）
    const val FUNASR_VAD_AVG_ABS_THRESHOLD = 400
    const val FUNASR_VAD_SILENCE_TIMEOUT_MS = 5000

    // 轻量本地降噪/前处理
    const val AUDIO_SOURCE_VOICE_RECOGNITION = false
    const val ENABLE_NOISE_SUPPRESSOR = false
    const val ENABLE_ACOUSTIC_ECHO_CANCELER = false // 若设备外放TTS并采集麦克风可开启
    const val ENABLE_AUTOMATIC_GAIN_CONTROL = false // 谨慎开启，可能引入呼吸声
    const val ENABLE_HIGHPASS_FILTER = true
    const val HIGHPASS_CUTOFF_HZ = 100 // 简单单极高通截止频率

    // 本地录音参数
    const val REC_PRE_MS = 1000
    const val REC_POST_MS = 1000
    const val REC_SILENCE_MS = 1000
    const val REC_TIMEOUT_MS = 5000

    // 新逻辑参数
    const val START_REC_BACKOFF_MS = 1200
    const val WS_IDLE_TIMEOUT_MS = 1200
    const val VOICEPRINT_KEEP_MS = 3000
}